
\subsection{Resumen enunciado}


%\bfseries{\color{red} Enunciado:}

\normalfont

Ejercitar conceptos relacionados con estructuras de datos y programación \CPPLANG \space orientada a objetos de
mayor complejidad. Escribir un programa en este lenguaje (y su correspondiente documentación) que resuelva
el problema que presentaremos más abajo.\\\
A los efectos de poner en práctica algunas nociones de programación orientada a objetos, haremos uso del
patrón de diseño \textbf{Bridge}. A través de éste podremos desacoplar la noción abstracta de conjunto de cada
una de las implementaciones que soportaremos, obteniendo de esta manera un diseño más prolijo y escalable.\\
La idea será definir una clase abstracta \textbf{Set} que incluya un constructor que reciba como argumento un
puntero a \textbf{SetImplementation}. Esta clase, también abstracta, contará con diversas subclases que definirán
el comportamiento concreto del conjunto según la estructura de soporte utilizada. De esta manera, cada operación en \textbf{Set} sólo deberá invocar la respectiva operación provista por la implementación.\\


\subsection{Desarrollo}

Dado que las implementaciones serán templates, algo impuesto por la necesidad del manejo de varios tipos de dato, serán necesarias otras estructuras auxiliares para lograr la interacción con las mismas, ya que al ser estas especializadas con los diferentes tipos de dato no se hallarán relacionadas por herencia, lo cuál complica su instanciación y manejo.\\
Otra cuestión es el parseo de la entrada, la cuál se presenta a modo de comandos separados por saltos de línea y posibles parámetros, esto también requerirá de estructuras extra para su parseo y validación.\\
El manejo de la línea de comando se realizará utilizando la misma clase desarrollada para el anterior trabajo práctico, la cuál ya se había probado detalladamente, motivo por el cuál no fue modificada, a pesar de las correcciones realizadas sobre la misma.


\clearpage
